home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
demo
/
scanwm15.zip
/
BASEPAK.MS_
/
BASEPAK.MS
Wrap
Text File
|
1995-03-09
|
27KB
|
959 lines
'**************************************************************************
'* base pack setup script
'**************************************************************************
'$DEFINE DEBUG ''Define for script development/debugging
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
'$INCLUDE 'msregdb.inc'
DECLARE FUNCTION ShowWindow LIB "user" (Hwnd%, nCmdShow%) AS INTEGER
DECLARE FUNCTION WinExec LIB "kernel" (RunPgm$, nCmdShow%)AS INTEGER
'* DECLARE FUNCTION CheckIDValidity LIB "scid.dll" (SerNo$) AS INTEGER
'* DECLARE FUNCTION CopyIDResource LIB "scid.dll" (Na$, Co$, Ser$) AS INTEGER
CONST SW_SHOWMAXIMIZED% = 3
CONST SW_SHOW% = 5
CONST STFNOSCANUS = 1026 ''quit because Scan/US not installed
''File Types
''** system type includes exec, schema, ini, and config
CONST SYSTEMFILES = 1
CONST MAPFILES = 5
CONST DATAFILES = 7
CONST HELPFILES = 8
CONST USERFILES = 9
CONST TOTALFILETYPES = 9
''Dialog ID's
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST QUICKPATH = 300
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST OPTIONS = 800
CONST APPHELP = 900
CONST PROBLEM = 1000
CONST EXITSUCCESS = 700
CONST NOQUICKDLG = 1200
CONST DESTPATH = 1800
CONST QUICKDLG = 1700
CONST CUSTINST = 6200
CONST CUSTHELP = 2300
CONST TOOBIG = 6300
CONST BADPATH = 6400
CONST CDGETNAMEORG = 7500
CONST BILLBOARD1 = 2101
CONST BILLBOARD2 = 2400
CONST BILLBOARD3 = 2700
CONST SCANEXIST = 2800
CONST ALREADY = 7801
''Bitmap ID
CONST LOGO = 1
GLOBAL WINDIR$ ''Windows directory.
GLOBAL INIDEST$ ''Single-user, the Windows Directory. Network, cd be anywhere
GLOBAL INIFILE$ ''Single-user, the Windows Directory. Network, cd be anywhere
GLOBAL DEST$ ''Default destination directory.
GLOBAL OPTCUR$ ''Option selection from option dialog. (quick/custom)
GLOBAL SrcDir$ ''source directory
GLOBAL cwd$ '' current working directory.
''destination dirs
GLOBAL MAPDEST$ ''cartography destination directory.
GLOBAL DATADEST$ ''
GLOBAL CDMOVIES$
GLOBAL DBXDEST$ ''schema directory
GLOBAL HELPENTRY$ '' The data description for
GLOBAL BASISDBX$ '' The data description for
GLOBAL PER92DBX$ '' The 1992 period dbx
GLOBAL CUSTOMDBX$ '' The customer's custom dbx
GLOBAL EXEDEST$ ''scanus.exe directory
GLOBAL GDSDEST$ ''config directory
GLOBAL HLPDEST$ ''help files directory
GLOBAL USERDEST$ ''user files directory, incl. sample excel files
GLOBAL AREADEST$ ''arealists
GLOBAL TUTDEST$ ''tutorial example data and any supporting files
GLOBAL INDXDEST$ ''index files directory
GLOBAL CompanyName$ '' typed in during install, used during print!
GLOBAL UserName$
GLOBAL ValidSerialNumber$
'** GLOBAL XLREPORTMACRO$
GLOBAL PROD$
''CustInst list symbol names
GLOBAL SYSNEEDS$
GLOBAL MAPNEEDS$ ''Option list costs per drive
GLOBAL DATANEEDS$
GLOBAL HELPNEEDS$ ''Option list costs per drive
GLOBAL USERNEEDS$ ''Option list costs per drive
GLOBAL OPT2NEEDS$
GLOBAL LISTOFCOSTS$
GLOBAL DRIVENEEDS$
GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive
GLOBAL BIGLIST$ ''List of option files cost calc results (boolean)
Global bDestinationTooSmall%
Global ChangedList%
GLOBAL change%
GLOBAL CCSys&
GLOBAL CCMap&
GLOBAL CCData&
GLOBAL CCHelp&
GLOBAL CCUser&
GLOBAL TCOST$ '' string equivalent, in "K" of New Cost of change in Global CostChange&
'** SpreadSheet Existence Variables
GLOBAL SheetAppExists%
GLOBAL ExcelExists%
GLOBAL ExcelPath$
GLOBAL LotusExists%
GLOBAL LotusPath$
GLOBAL QProExists%
GLOBAL QProPath$
GLOBAL PrevScanExists%
GLOBAL PrevScanPath$
DECLARE SUB MakeNameResource
DECLARE SUB Install
DECLARE SUB CreateCopyList
DECLARE SUB SetDestVars
DECLARE SUB CleanSetDestVars
DECLARE FUNCTION MakePath (szDir$,szFile$) AS STRING
DECLARE FUNCTION DoesSheetExist (szExt$,szPath$,szName$) AS INTEGER
DECLARE SUB MakeCopyList
DECLARE SUB RecalcPath
DECLARE SUB CostCalc
DECLARE SUB AddOptFilesToCopyList (ftype%)
DECLARE FUNCTION RecalcOptFiles (ftype%) AS LONG
DECLARE SUB InitDriveNeed
DECLARE SUB ClearDriveNeed
''Dialog list symbol names
GLOBAL CHECKSTATES$
GLOBAL PATHSIZES$
GLOBAL PATHNAMES$
GLOBAL HwndApp%
GLOBAL NameResource As String *81
GLOBAL bCleanInstall%
GLOBAL bBaseChanged%
GLOBAL bOnCd%
GLOBAL ProductMovies$ '* Product includes ScreenCam movies (*and scrncamp.exe)
GLOBAL ProductMoviesOnly$
GLOBAL bScreenCam%
GLOBAL EXECPROGRAMLINE$
INIT:
bOnCd%=0
bCleanInstall%=1
CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
'** rc%=DoMsgBox("Step 0.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
HwndApp% = HwndFrame()
IF HwndApp% <> 0 THEN
SuccessVal% = ShowWindow(HwndApp%,SW_SHOWMAXIMIZED%)
ENDIF
'** Set up write task to maximize
EXECPROGRAMLINE$ = "\maxi write "
ScreencamExt$=".scm"
bScreenCam% = DoesRegKeyExist(ScreencamExt$)
IF bScreenCam% THEN
' OpenLogFile "c:\LOGFILE.OUT",0
szMoviePath$ = GetRegKeyValue("ScreenCamMovie\protocol\stdFileEditing\server")
bScreenCam% = DoesFileExist(szMoviePath$, femRead)
' WriteToLogFile " Screencam is really there! '" + szMoviePath$ + "'"
' CloseLogFile
ENDIF
SetBitmap CUIDLL$, LOGO
SetTitle "Scan/US Setup"
SetAbout "Scan/US", "1.0"
PrevScanExists% = 0
'' Get current working directory
cwd$ = GetSymbolValue("STF_CWDDIR")
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = cwd$ + "BASEPAK.INF"
END IF
'** Ready to Get the info about the movies
szFeatLoc$ = cwd$ + "product.gds"
cwd$=""
RemoveSymbol ("STF_CWDDIR")
'** Get the info about the movies
ProductMovies$=GetIniKeyString(szFeatLoc$,"product","movies")
ProductMoviesOnly$=GetIniKeyString(szFeatLoc$,"product","justmovies")
ReadInfFile szInf$
'**rc%=DoMsgBox("Read the inf file.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
SrcDir$ = GetSymbolValue("STF_SRCDIR")
'** i% = DoMsgBox("Source Directory ('"+SrcDir$+"') has been set up.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
ProductDrive$ = MID$(SrcDir$, 1, 1)
CDMOVIES$ = ProductDrive$ + ":\movies"
HELPENTRY$ = GetSectionKeyFilename("help","helpentry")
BASISDBX$ = GetSectionKeyFilename("schema","basis")
PER92DBX$ = GetSectionKeyFilename("schema","period")
'** CUSTOMDBX$ = GetSectionKeyFilename("schema","customer")
MAPNEEDS$= "MAPneedList"
DATANEEDS$= "DATAneedList"
HELPNEEDS$= "HELPneedList"
USERNEEDS$= "USERneedList"
SYSNEEDS$= "SYSneedList"
EXTRACOST$= "EXTracost"
''CustInst list symbols
PATHSIZES$ = "PathSizeItemsText"
PATHNAMES$ = "PathNamesItemsText"
FOR i% = 1 TO 7 STEP 1
AddListItem PATHSIZES$, "0K"
NEXT i%
'** rc%=DoMsgBox("Added the list items.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
''Disk cost list symbols
MAPNEEDS$ = "MapNeeds"
DATANEEDS$ = "DataNeeds"
BIGLIST$ = "BigList"
DRIVENEEDS$ = "DriveNeeds"
FOR i% = 1 TO TOTALFILETYPES STEP 1
AddListItem BIGLIST$, ""
NEXT i%
OPTCUR$ = "1" '** Option selection: quick/custom
'$IFDEF DEBUG
i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
WinDrive$ = MID$(GetWindowsDir, 1, 1)
IF IsDriveValid(WinDrive$) = 0 THEN
i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
GOTO QUIT
END IF
'$ENDIF ''DEBUG
InitDriveNeed
WINDIR$ = GetWindowsDir()
'** Look for some SpreadSheets
ExcelExists% = DoesSheetExist("XLM",ExcelPath$,"EXCEL")
QProExists% = DoesSheetExist("WB1",QProPath$,"QPW")
LotusExists% = DoesSheetExist("WK4",LotusPath$,"123W")
SheetAppExists% = ExcelExists% + QProExists% + LotusExists%
'** PrevScanExists% = DoesSheetExist("GDS",PrevScanPath$,"SCANUS")
INIDEST$ = GetIniKeyString("win.ini","scanUS","IniPath")
'**rc%=DoMsgBox("Got the ini path string.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
IF INIDEST$="" THEN
INIDEST$ = WINDIR$
END IF
IF MID$(INIDEST$, LEN(INIDEST$), 1) = "\" THEN
ELSE
INIDEST$ = INIDEST$ + "\"
END IF
INIFILE$ = INIDEST$ +"SCANUS.INI"
PROD$ = "PRODUCTS"
DEST$ = GetIniKeyString(INIFILE$,PROD$,"basepack")
IF DEST$ = "" THEN
PrevScanExists% = 0
DEST$ = "C:\SCANUS"
ELSE
PrevScanExists% = 1
dlg% =ALREADY
GOTO QUITL1
ENDIF
'** Perhaps add call to IsDirWritable here, to catch scanus.ini messups.
'** Intro message. Just check ok to continue.
WELCOME:
''rc%=DoMsgBox("Doesn't exist: made the copy list.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO WELCOME
END IF
'** Fall through to this dialog. Can also jump back from a BACK
CREATEIDRESOURCE:
'** Fall through to this dialog, or jumped here when already installed from floppy
'** Can also jump back from QuickPath
'** Now, enter the base path to install to.
GETPATH0:
olddest$ = DEST$
GETPATH:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, QUICKPATH, "FEditDlgProc", APPHELP, HELPPROC$)
DEST$ = GetSymbolValue("EditTextOut")
IF sz$ = "CONTINUE" THEN
IF olddest$ <> DEST$ THEN
olddest$ = DEST$
ChangedList% = 1
bBaseChanged% = 1
ELSE
ChangedList% = 0
END IF
IF IsDirWritable(DEST$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO GETPATH
ELSE
GOSUB ASKQUIT
GOTO GETPATH
END IF
IF ChangedList% = 1 THEN
CleanSetDestVars
MakeCopyList '** Time consuming. Was done for default case. Only do again if nec.
ELSE
CleanSetDestVars
END IF
StillNeed& = GetCopyListCost(EXTRACOSTS$, LISTOFCOSTS$, "")
IF StillNeed& > 0 THEN
'** there's not enough space, go give opportunite to shuffle around.
'** GOTO CUSTOMOPTION
GOSUB TOOBIG
GOTO GETPATH
ELSE
'** there's enough space, go ahead.
GOTO DOQUICKINSTALL
END IF
DOQUICKINSTALL:
Install
GOTO QUIT
QUIT:
dlg% =PROBLEM
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
dlg% = EXITSUCCESS
ELSEIF ERR = STFQUIT THEN
dlg% = EXITQUIT
ELSE
dlg% = EXITFAILURE
END IF
QUITL1:
sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
END
ERRQUIT:
i% = DoMsgBox("Setup sources were corrupted, call 310-820-1581!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
END
TOOBIG:
'* i% = DoMsgBox("TooBig", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
'** RecalcPath
GOTO TOOBIG
END IF
UIPop 1
RETURN
TOOBIGMAP:
sz$ = UIStartDlg(CUIDLL$, TOOBIGMAP, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
'** RecalcPath
GOTO TOOBIGMAP
END IF
UIPop 1
RETURN
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO BADPATH
END IF
UIPop 1
RETURN
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
'**
'** Purpose:
'** Builds the copy list and performs all installation operations.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB Install STATIC
'** add check for MAPDEST$ -- its absence means Scan\US wasn't installed
'** or the setup was messed up later on.
CreateDir DEST$ , cmoNone
CreateDir MAPDEST$ , cmoNone
CreateDir DATADEST$ , cmoNone
CreateDir HLPDEST$ , cmoNone
CreateDir USERDEST$ , cmoNone
CreateDir INDXDEST$ , cmoNone
CreateDir DBXDEST$ , cmoNone
CreateDir EXEDEST$ , cmoNone
CreateDir GDSDEST$ , cmoNone
' OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
CreateCopyList
CGX% = 125
CGY% = 125
SetCopyGaugePosition CGX%, CGY%
AddToBillboardList "mscuistf.dll", BILLBOARD1, "FModelessDlgProc", 100
AddToBillboardList "mscuistf.dll", BILLBOARD2, "FModelessDlgProc", 100
AddToBillboardList "mscuistf.dll", BILLBOARD3, "FModelessDlgProc", 100
CopyFilesInCopyList
'it's a userdata (10) with an id of 7 (7)
UserName$="Scan/US Working Model"
CompanyName$="Scan/US, Inc."
ValidSerialNumber$="15019372777751"
MakeNameResource '** Add up username, companyname, validseron, and put in resource
StampResource "exec","scanexe",EXEDEST$,10,7, NameResource, 80
'** StampResource "Files","scid",EXEDEST$,10,7, NameResource, 80
' CloseLogFile
IF bOnCd% THEN
'** datapath$ = MAPDEST$ + ";" + DATADEST$ + ";" + USERDEST$ + ";"+ CDGRIDDATA$ + ";" + CDGRIDMAPS$ + ";" + CDSTREETMAPS$
ELSE
datapath$ = MAPDEST$ + ";" + DATADEST$ + ";" + USERDEST$
ENDIF
'*** + ";" + HLPDEST$
CreateIniKeyValue "WIN.INI","Extensions","gds", EXEDEST$ + "\scanus.exe ^.gds",cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PATHS", "LAYOUT", EXEDEST$ , cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "paths", "data", datapath$, cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "paths", "config", GDSDEST$ + "\scanus.gds", cmoVital OR cmoOverwrite
' CreateIniKeyValue INIFILE$, "paths", "schema", DBXDEST$ + "\" + BASISDBX$ + ";" + DBXDEST$ + "\" + PER92DBX$ + ";" + DBXDEST$ + "\" + CUSTOMDBX$, cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "paths", "schema", DBXDEST$ + "\" + BASISDBX$ + ";" + DBXDEST$ + "\" + PER92DBX$, cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "paths", "USERDATA", USERDEST$, cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "paths", "index", INDXDEST$, cmoVital OR cmoOverwrite
'** help only found when backslash is appended to help line.
CreateIniKeyValue INIFILE$, "paths", "help", HLPDEST$ + "\" + HELPENTRY$, cmoNone OR cmoOverwrite
'** CreateIniKeyValue INIFILE$, "paths", "helpfile", HELPENTRY$, cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "basepack", DEST$, cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "exec", EXEDEST$, cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "config", GDSDEST$ , cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "schema", DBXDEST$ , cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "index", INDXDEST$, cmoVital OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "basemaps", MAPDEST$, cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "basedata", DATADEST$, cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "PRODUCTS", "help", HLPDEST$, cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "Dictionary","company", CompanyName$, cmoNone OR cmoOverwrite
CreateIniKeyValue INIFILE$, "Dictionary","user" , UserName$, cmoNone OR cmoOverwrite
'* put in quote character
Q$ = CHR$(34)
IF SheetAppExists% > 1 THEN
'* need to pick which spreadsheet macros to install, more than one option!
ENDIF
'**, so here's the task menu:
'** Run Excel
'** Reports...
'** Build Gravity Model...
'** Copy Session...
'** Check For Excel before installing Excel-based Task Lines.
IF ExcelExists = 1 THEN
'**
CreateIniKeyValue INIFILE$, "TASKS", "Run Excel", "EXEC !" + Q$ + ExcelPath$ + Q$, cmoNone OR cmoOverwrite
'**Create Menu Entry: EXEC !Excel "C:\SCANUS\USERDATA\SCANMCRO.XLM"
XLREPORTMACRO$= "\QLDATMAC.XLM"
CreateIniKeyValue INIFILE$, "TASKS", "_QLReport", "EXEC !" + Q$ + ExcelPath$ + " "+ USERDEST$+ XLREPORTMACRO$ + Q$, cmoNone OR cmoOverwrite
ENDIF
'** Create menu entry: Order Scan/US...
CreateIniKeyValue INIFILE$, "TASKS", "Order Scan/US...", "EXEC !" + Q$ +"Notepad "+ MakePath(EXEDEST$,"order.txt")+ Q$, cmoNone OR cmoOverwrite
'** Set up the Program Manager Group, Two Scan/US Icons, and NotePad
CreateProgmanGroup "Scan/US", "", cmoNone
ShowProgmanGroup "Scan/US", 1, cmoNone
CreateProgmanItem "Scan/US", "Scan/US", EXEDEST$ + "\scanwm.exe ", "", cmoOverwrite
CreateProgmanItem "Scan/US", "Read Me.", "notepad.exe "+MakePath(DEST$,"scenario.txt"), "", cmoOverwrite
HELPINTRO$="scanmodl.hlp"
HELPINTRO$="qkstart.hlp"
CreateProgmanItem "Scan/US", "Scan/US Help", HLPDEST$ + "\" + HELPENTRY$, "", cmoOverwrite
CreateProgmanItem "Scan/US", "Scan/US Working Model", HLPDEST$ + "\" + HELPINTRO$, "", cmoOverwrite
CreateIniKeyValue GDSDEST$ + "\scanus.gds", "QuickPaths", "My Editable Databases",USERDEST$, cmoVital OR cmoOverwrite
CreateIniKeyValue GDSDEST$ + "\scanus.gds", "QuickPaths", "Scan/US Standard Maps",MAPDEST$, cmoVital OR cmoOverwrite
cwd$ = ""
'* CloseLogFile
END SUB
'**
'** Purpose:
'** Adds the specified option files to the copy list.
'** Arguments:
'** ftype% - type of files to add, one of the following:
'** MAPPFILES, DataFILES1, OPTFILES2
'** Returns:
'** none.
'*************************************************************************
SUB AddOptFilesToCopyList (ftype%) STATIC
SrcDir$ = GetSymbolValue("STF_SRCDIR")
IF ftype% = SYSTEMFILES THEN
AddSectionFilesToCopyList "schema", SrcDir$, DBXDEST$
AddSectionFilesToCopyList "ini", SrcDir$, INIDEST$
AddSectionFilesToCopyList "config", SrcDir$, GDSDEST$
AddSectionFilesToCopyList "exec", SrcDir$, EXEDEST$
ELSEIF ftype% = MAPFILES THEN
AddSectionFilesToCopyList "basemaps", SrcDir$, MAPDEST$
ELSEIF ftype% = DATAFILES THEN
AddSectionFilesToCopyList "basedata", SrcDir$, DATADEST$
ELSEIF ftype% = HELPFILES THEN
AddSectionFilesToCopyList "help", SrcDir$, HLPDEST$
ELSEIF ftype% = USERFILES THEN
AddSectionFilesToCopyList "userdata", SrcDir$, USERDEST$
END IF
SrcDir$ = ""
END SUB
'**
'** Purpose:
'** Recalculates disk space for the given option files and sets
'** the status info symbol "StatusItemsText".
'** Arguments:
'** ftype% - type of files to add, one of the following:
'** APPFILES, OPTFILES1, OPTFILES2
'** Returns:
'** none.
'*************************************************************************
FUNCTION RecalcOptFiles& (ftype%) STATIC
'** rc%=DoMsgBox("Recalcopt "+STR$(ftype%),"DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
CursorSave% = ShowWaitCursor()
ClearCopyList
SrcDir$ = GetSymbolValue("STF_SRCDIR")
IF (bScreenCam%) THEN
ELSE
'** AddSectionFilesToCopyList "player", SrcDir$, EXEDEST$
ENDIF
AddOptFilesToCopyList ftype%
fExtra% = 0
SELECT CASE ftype%
CASE SYSTEMFILES
LISTOFCOSTS$ = SYSNEEDS$
CASE MAPFILES
LISTOFCOSTS$ = MAPNEEDS$
CASE DATAFILES
LISTOFCOSTS$ = DATANEEDS$
CASE HELPFILES
LISTOFCOSTS$ = HELPNEEDS$
CASE USERFILES
LISTOFCOSTS$ = USERNEEDS$
CASE ELSE
i% = DoMsgBox("Problem with recalc argument1", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
END SELECT
StillNeed& = GetCopyListCost(EXTRACOSTS$, LISTOFCOSTS$, "")
cost& = 0
FOR i% = 1 TO 26 STEP 1
cost& = cost& + VAL(GetListItem(LISTOFCOSTS$, i%))
usevalue& = VAL(GetListItem(DRIVENEEDS$,i%)) + VAL(GetListItem(LISTOFCOSTS$, i%))
ReplaceListItem DRIVENEEDS$, i%, STR$(usevalue&)
NEXT i%
'** i% = DoMsgBox("Problem with recalc argument2", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
RecalcOptFiles = cost&
KSize$ = STR$(cost& / 1024)
IF ftype% = SYSTEMFILES THEN
'** DumpCopyList "d:\scanship\copylist.log"
'** i% = DoMsgBox("The system file total is "+STR$(cost&), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
ReplaceListItem PATHSIZES$, ftype%, KSize$ + " K"
ELSE
ReplaceListItem PATHSIZES$, ftype%-3, KSize$ + " K"
END IF
IF StillNeed& > 0 THEN
ReplaceListItem BIGLIST$, ftype%, "YES"
ELSE
ReplaceListItem BIGLIST$, ftype%, ""
END IF
IF fExtra% THEN
ReplaceListItem EXTRACOSTS$, ndrive%, "0"
END IF
RestoreCursor CursorSave%
LISTOFCOSTS$ = ""
END FUNCTION
'** Purpose:
'** Set up destination variables,
'** paths, make copy list,
'** and set up its space requirements.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB MakeCopyList STATIC
RecalcPath
'** rc%=DoMsgBox("Recalc the path.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
CreateCopyList
'** rc%=DoMsgBox("copylist created.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
END SUB
'**
'** Purpose:
'** Recalculates disk space and sets option status info according
'** to the current destination path.
'** Arguments:
'** none.
'** Returns:
'** none. New Cost of change in Global CostChange&
'** Global TCOST$ has string equivalent, in "K"
'*************************************************************************
SUB RecalcPath STATIC
CursorSave% = ShowWaitCursor()
ClearDriveNeed
CCSys&= RecalcOptFiles(SYSTEMFILES)
CCMap&= RecalcOptFiles(MAPFILES)
CCData&= RecalcOptFiles(DATAFILES)
CCHelp&= RecalcOptFiles(HELPFILES)
CCUser&= RecalcOptFiles(USERFILES)
CostCalc
RestoreCursor CursorSave%
END SUB
SUB CostCalc STATIC
Costchange& = CCSys& + CCMap& + CCData& + CCHelp& + CCUser&
TCOST$ = STR$ (Costchange&/1024)+" K"
ReplaceListItem PATHSIZES$,7, TCOST$
END SUB
'**
'** Purpose:
'** Sets drive directory destination variables
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB SetDestVars STATIC
IF MAPDEST$ = "" THEN
MAPDEST$ = DEST$ + "\SCANMAPS"
ENDIF
IF DATADEST$ ="" THEN
DATADEST$ = DEST$ + "\SCANDATA"
ENDIF
IF DBXDEST$ ="" THEN
DBXDEST$ = DEST$
ENDIF
IF EXEDEST$ ="" THEN
EXEDEST$ = DEST$
ENDIF
IF GDSDEST$ ="" THEN
GDSDEST$ = DEST$
ENDIF
IF HLPDEST$ ="" THEN
HLPDEST$ = DEST$ + "\HELP"
ENDIF
IF USERDEST$ ="" THEN
USERDEST$ = DEST$ + "\USERDATA"
ENDIF
IF INDXDEST$ ="" THEN
INDXDEST$ = DEST$ + "\INDEX"
ENDIF
END SUB
'** End of SetDestVars
SUB CleanSetDestVars STATIC
MAPDEST$ = ""
DATADEST$ =""
DBXDEST$ =""
EXEDEST$ =""
GDSDEST$ =""
HLPDEST$ =""
USERDEST$ =""
INDXDEST$=""
SetDestVars
END SUB
'**
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION
GETSUBPATH:
SetSymbolValue "EditFocus", "END"
GETSUBPATHL1:
sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
IF sz$ = "CONTINUE" THEN
'** olddest$ = DEST$
LocalDest$ = GetSymbolValue("EditTextOut")
''Validate new path.
IF IsDirWritable(LocalDest$) = 0 THEN
GOSUB BADPATH
GOTO GETSUBPATHL1
END IF
''Truncate display if too long.
' IF LEN(DEST$) > 23 THEN
' ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
' ELSE
' ReplaceListItem DRIVETEXT$, 7, DEST$
' END IF
' ''Recalc if path changed.
' IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
' RecalcPath
' END IF
olddest$ = ""
ELSEIF sz$ = "REACTIVATE" THEN
'** RecalcPath
GOTO GETSUBPATHL1
ELSEIF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO GETSUBPATHL1
ELSEIF sz$ = "BACK" THEN
LocalDest$ = GetSymbolValue("EditTextIn")
ELSE
END IF
LocalDest$=UCASE$(LocalDest$)
UIPop 1
RETURN
SUB MakeNameResource STATIC
ub% = 31 - LEN(UserName$)
cb% = 31 - LEN(CompanyName$)
NameResource = MID$(UserName$,1,31) + STRING$(ub%,32) + CHR$(0) + MID$(CompanyName$,1,31) + STRING$(cb%,32)+ CHR$(0) + ValidSerialNumber$
END SUB
SUB CreateCopyList STATIC
SrcDir$ = GetSymbolValue("STF_SRCDIR")
ClearCopyList
IF (bScreenCam%) THEN
ELSE
'** AddSectionFilesToCopyList "player", SrcDir$, EXEDEST$
ENDIF
AddSectionFilesToCopyList "exec", SrcDir$, EXEDEST$
AddSectionFilesToCopyList "schema", SrcDir$, DBXDEST$
AddSectionFilesToCopyList "ini", SrcDir$, INIDEST$
AddSectionFilesToCopyList "config", SrcDir$, GDSDEST$
AddSectionFilesToCopyList "basemaps", SrcDir$, MAPDEST$
AddSectionFilesToCopyList "basedata", SrcDir$, DATADEST$
AddSectionFilesToCopyList "help", SrcDir$, HLPDEST$
AddSectionFilesToCopyList "userdata", SrcDir$, USERDEST$
'* AddSpecialFileToCopyList "Files","scid", SrcDir$, DBXDEST$ + "\scid.dll"
END SUB
SUB InitDriveNeed STATIC
FOR i% = 1 TO 26 STEP 1
AddListItem DRIVENEEDS$,"0"
NEXT i%
END SUB
SUB ClearDriveNeed STATIC
FOR i% = 1 TO 26 STEP 1
ReplaceListItem DRIVENEEDS$,i%,"0"
NEXT i%
END SUB
STATIC FUNCTION DoesSheetExist%(szExt$,szPath$,szName$)
'** First check for the entry
szPath$=GetIniKeyString("WIN.INI","Extensions",szExt$)
IF szPath$="" THEN
DoesSheetExist = 0
ELSE
'** Check for the Name in the path specification (asother progs may open same app by extension)
'**DEBUG rc% = DoMsgBox(szPath$ + szName$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
IF INSTR(szPath$,szName$) THEN
'** Then, check for the EXE specified in the entry's path
szPath$= MID$(szPath$,1,INSTR(szPath$,".")+3)
DoesSheetExist = DoesFileExist(szPath$, femRead)
ELSE
DoesSheetExist = 0
ENDIF
ENDIF
END FUNCTION